Задача: Преобразование целых чисел в битовый массив
Исходник: Преобразование int в массив байтов и обратно, язык: java [code #578, hits: 19378]
автор: - [добавлен: 15.01.2009]
  1. package com;
  2.  
  3. import java.nio.ByteBuffer;
  4. import java.util.Arrays;
  5.  
  6. public class AAA {
  7. public static void main(String[] args) throws Exception {
  8. System.out.println("------------------> Test excessive data <-------------------");
  9. useCustomConvesion(345, 10);
  10. System.out.println("");
  11. useStandardConversion(345, 10);
  12. System.out.println("");
  13. System.out.println("------------------> Test overflow <-------------------");
  14. useCustomConvesion(345, 1);
  15. System.out.println("");
  16. useStandardConversion(345, 1);
  17. }
  18.  
  19. private static void useCustomConvesion(int i, int arraySize) {
  20. byte[] b = intToByteArray(i, arraySize);
  21. System.out.println("Initial: " + i);
  22. System.out.println("As array: " + Arrays.toString(b));
  23. System.out.println("From array: " + byteArrayToInt(b, 0, b.length));
  24. }
  25.  
  26. private static void useStandardConversion(int i, int arraySize) {
  27. byte[] b = ByteBuffer.allocate(arraySize).putInt(i).array();
  28. System.out.println("Initial: " + i);
  29. System.out.println("As array: " + Arrays.toString(b));
  30. System.out.println("From array: " + ByteBuffer.wrap(b).getInt());
  31. }
  32.  
  33. private static int byteArrayToInt(byte[] b, int start, int length) {
  34. int dt = 0;
  35. if ((b[start] & 0x80) != 0)
  36. dt = Integer.MAX_VALUE;
  37. for (int i = 0; i < length; i++)
  38. dt = (dt << 8) + (b[start++] & 255);
  39. return dt;
  40. }
  41.  
  42. private static byte[] intToByteArray(int n, int byteCount) {
  43. byte[] res = new byte[byteCount];
  44. for (int i = 0; i < byteCount; i++)
  45. res[byteCount - i - 1] = (byte) ((n >> i * 8) & 255);
  46. return res;
  47. }
  48. }
Работает и с отрицательными числами.

http://rsdn.ru/forum/message/3194879.1.aspx
Тестировалось на: java 1.5.0_04

+добавить реализацию